package config

import (
	"multi-cloud-manage/utils"
	"os"
	"path/filepath"

	"gopkg.in/yaml.v3"
)

// 定义结构体用于接收配置文件中对应的字段
type Database struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	User     string `yaml:"user"`
	Password string `yaml:"password"`
	Dbname   string `yaml:"dbname"`
}
type Server struct {
	Port int `yaml:"port"`
}
type Jwt struct {
	Secret string `yaml:"secret"`
}
type Aescrypt struct {
	Key string `yaml:"key"`
}
type Config struct {
	Database Database `yaml:"database"`
	Server   Server   `yaml:"server"`
	Jwt      Jwt      `yaml:"jwt"`
	Aescrypt Aescrypt `yaml:"aescrypt"`
}

func GetConfig() *Config {
	// 定义一个结构体变量，用于保存反序列化的yaml
	config := &Config{}
	// 获取项目路径
	dir := utils.GetProjectPath()
	// 连接配置文件路径
	configPath := filepath.Join(dir, "config", "config.yaml")
	// fmt.Println(configPath)
	// 读取配置文件，使用绝对路径，返回字节切片
	dataBytes, err := os.ReadFile(configPath)
	if err != nil {
		panic(err)
	}
	// 将读取的yaml进行反序列化
	err = yaml.Unmarshal(dataBytes, &config)
	if err != nil {
		panic(err)
	}
	return config
}
